home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 5699 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  2.6 KB

  1. Path: newshost.lanl.gov!tanmoy
  2. From: tanmoy@qcd.lanl.gov (Tanmoy Bhattacharya)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Initialising structure members - help please!
  5. Date: 20 Feb 1996 17:25:41 GMT
  6. Organization: Los Alamos National Laboratory
  7. Message-ID: <TANMOY.96Feb20102541@qcd.lanl.gov>
  8. References: <4gb8hn$3m8@news.mistral.co.uk> <31298EF1.5F2C@cmt.lpr.mail.carel.fi>
  9.     <4gckb1$77e@news.mistral.co.uk> <TANMOY.96Feb20094514@qcd.lanl.gov>
  10. NNTP-Posting-Host: qcd.lanl.gov
  11. Mime-Version: 1.0
  12. Content-Type: text
  13. In-reply-to: tanmoy@qcd.lanl.gov's message of 20 Feb 1996 16:45:14 GMT
  14.  
  15. In article <TANMOY.96Feb20094514@qcd.lanl.gov> tanmoy@qcd.lanl.gov
  16. (Tanmoy Bhattacharya) writes: 
  17. <snip>
  18.    In article <4gckb1$77e@news.mistral.co.uk> mikebarnard@mistral.co.uk
  19.    (Mike Barnard) writes: 
  20.    <snip>
  21.       >You can't copy C strings with an "=".  You must use the strcpy() function.
  22.  
  23.       and...
  24.  
  25.       >Since you declared 'description' as an array of chars, use strcpy(one.description, 
  26.       >"whatever string"); Be sure you won't use longer strings than the space available. A 
  27.       >better approach would be to declare 'decription' as a 'char *' and then malloc 
  28.  
  29.    Yet better is to declare it const char * then. String literals are
  30.    arrays of type `char []', which in most uses decay to `char*' and can
  31.    be assigned to `const char*'. However, like `const char[]' objects,
  32.    string literals cannot be modified portably. Unlike `const char[]' objects,
  33.    attempts to modify them do not, by themselves, require a diagnostic
  34.    from the compiler.
  35.  
  36.    Assigning them to `const char*' guarantees that unless explicit casts
  37.    (or other tricks involving library functions) are used, any attempt to
  38.    modify them will generate a diagnostic.
  39.  
  40.       >enough space for whatever string you're going to place into it. (Also, your syntax 
  41.       >would work in that case.) The last two will work if you add & in front of them.
  42.  
  43.  
  44. Sorry, omit the garbage I posted above. I did not read carefully
  45. enough to see that the suggestion was to malloc space. char*x =
  46. "hello" is unsafe, char *x=malloc(...) followed by if(x) strcpy(...)
  47. can be absolutely safe. Malloc'ed space is writable of course.
  48.  
  49. Cheers
  50. Tanmoy
  51. --
  52. tanmoy@qcd.lanl.gov(128.165.23.46) DECNET: BETA::"tanmoy@lanl.gov"(1.218=1242)
  53. Tanmoy Bhattacharya O:T-8(MS B285)LANL,NM87545 H:#9,3000,Trinity Drive,NM87544
  54. Others see <gopher://yaleinfo.yale.edu:7700/00/Internet-People/internet-mail>,
  55. <http://alpha.acast.nova.edu/cgi-bin/inmgq.pl>or<ftp://csd4.csd.uwm.edu/pub/
  56. internetwork-mail-guide>. -- <http://nqcd.lanl.gov/people/tanmoy/tanmoy.html>
  57. fax: 1 (505) 665 3003   voice: 1 (505) 665 4733    [ Home: 1 (505) 662 5596 ]
  58.